package com.tbit.uqbike.service.business;

import com.tbit.uqbike.object.pojo.statistics.AccountDataDaySta;
import com.tbit.uqbike.object.pojo.statistics.AccountDataMonthSta;
import com.tbit.uqbike.object.value.LoginInfo;
import com.tbit.uqbike.object.view.JsonResult;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @Author HZW
 * @ClassName ReconcileService
 * @Description
 * @date 2022/4/2 16:46
 * @Version 1.0
 */
public interface ReconcileService {


    /**
     * 根据品牌时间获取数据
     *
     * @param accountId 帐户id
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return {@link List}<{@link Map}<{@link String}, {@link Object}>>
     * @throws ParseException 解析异常
     */
    List<Map<String, Object>> getBrandDateByTime(Integer accountId, String startTime, String endTime) throws ParseException;


    /**
     * 根据区域获取数据
     *
     * @param accountId 帐户id
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return {@link List}<{@link AccountDataDaySta}>
     * @throws ParseException 解析异常
     */
    List<AccountDataMonthSta> getAreaByTime(Integer accountId, String startTime, String endTime) throws ParseException;


    /**
     * 根据区域和时间查询数据
     *
     * @param accountId 帐户id
     * @param dataTime  数据时间
     * @return {@link List}<{@link Map}<{@link String}, {@link Object}>>
     */
    List<Map<String, Object>> getDateByAreaTime(Integer accountId, String dataTime);


    /**
     * 退款
     * 骑行订单退款
     *
     * @param login      操作人信息
     * @param accountid  区域id
     * @param orderNO    订单号
     * @param phone      电话
     * @param money      退款金额
     * @param refundType 退款类型
     * @param isSend     是否发送
     * @param isMessage  消息标识
     * @return boolean
     * @throws ParseException 解析异常
     */
    JsonResult refund(Integer accountid, String orderNO, String phone, Integer money, Integer refundType, Integer isSend, String isMessage, LoginInfo login) throws ParseException;


    /**
     * excel
     *
     * @param response  响应
     * @param dataTime  数据时间
     * @param accountId 帐户id
     * @param out       出
     * @return boolean
     */
    boolean excel(HttpServletResponse response, OutputStream out, String dataTime, Integer accountId);
}
